import { createHead } from '@unhead/vue'
import { createApp } from 'vue'
import { VContainer, VDivider } from 'vuetify/components'
import { initI18n } from '@/i18n'
import vuetify from '@/plugins/vuetify'
import { setInstaller } from '@/utils/installer'
import { setupPostbackParams } from '@/utils/postback'
import Main from '@/Main.vue'
import Icon from '@/components/common/Icon.vue'
import { createGtm } from '@/gtm'
import router from '@/router'
import store from '@/store'
import '@/style.scss'

// postback 需要的參數必須先捕捉保存下來
setupPostbackParams()

const app = createApp(Main)
const head = createHead()

initI18n().then((i18n) => {
  app.use(head)
  app.use(vuetify)
  app.use(i18n)
  app.use(router)
  app.use(store)
  app.component('Icon', Icon)
  app.component('VContainer', VContainer)
  app.component('VDivider', VDivider)

  // 如果環境變數裡沒有設定VITE_GTM_ID，就不要載入gtm
  if (import.meta.env.VITE_GTM_ID) {
    app.use(createGtm(router))
  }

  app.mount('#app')
})

// pwa 安裝提示事件
window.addEventListener('beforeinstallprompt', setInstaller)

// ios safari 開啟鍵盤後在任何可滑動元件上快速點擊會讓整個畫面往上移動
// 最後只找到這個方式把雙擊事件關掉
// 如果整個應用有需要使用雙擊事件可能要深思熟慮一下
document.addEventListener('dblclick', (evt) => evt.preventDefault())

if (import.meta.env.MODE === 'production') {
  document.addEventListener('keydown', (evt) => {
    if (evt.key === 'F12' || evt.code === 'F12') evt.preventDefault()

    // 禁用選取網頁元件
    if (evt.metaKey && evt.shiftKey && evt.code === 'KeyC') evt.preventDefault()

    // 禁用 windows & linux & osx 開啟開發者工具視窗的快捷鍵，包含 chrome, firefox, safari
    if ((evt.metaKey && evt.altKey) || (evt.ctrlKey && evt.shiftKey)) {
      if (
        evt.code === 'KeyA' ||
        evt.code === 'KeyC' ||
        evt.code === 'KeyI' ||
        evt.code === 'KeyJ' ||
        evt.code === 'KeyK' ||
        evt.code === 'KeyU'
      ) {
        evt.preventDefault()
      }
    }
  })
  document.addEventListener('contextmenu', (evt) => evt.preventDefault())
}
